package com.yf.exam.modules.trainingarchives.studentinfo.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yf.exam.core.api.dto.BaseIdReqDTO;
import com.yf.exam.core.api.dto.PagingReqDTO;
import com.yf.exam.modules.trainingarchives.pdfexport.dto.second.StudentAssessmentExportDTO;
import com.yf.exam.modules.trainingarchives.pdfexport.dto.second.StudentInfoExportDTO;
import com.yf.exam.modules.trainingarchives.pdfexport.dto.second.three.StudentInfoListExportDTO;
import com.yf.exam.modules.trainingarchives.studentinfo.dto.export.StudentExportDTO;
import com.yf.exam.modules.trainingarchives.studentinfo.dto.req.StudentInfoReqDTO;
import com.yf.exam.modules.trainingarchives.studentinfo.dto.resp.StudentInfoRespDTO;
import com.yf.exam.modules.trainingarchives.studentinfo.entity.StudentInfo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 学员信息表 服务类
 * </p>
 *
 * @author author
 * @since 2024-12-29
 */
public interface IStudentInfoService extends IService<StudentInfo> {

    /**
     * 添加学员信息
     * @param studentInfoReqDTO
     * @return
     */
    Boolean add(StudentInfoReqDTO studentInfoReqDTO);

    /**
     * 根据id删除学员信息
     * @param id
     * @return
     */
    Boolean deleteById(String id);

    /**
     * 批量删除
     */
    Boolean deleteBatch(List<String> ids);

    /**
     * 更新学员信息
     * @param studentInfoReqDTO
     * @return
     */
    Boolean updateStudent(StudentInfoReqDTO studentInfoReqDTO);

    /**
     * 分页查询学员信息
     * @param reqDTO
     * @return
     */
    IPage<StudentInfoRespDTO> paging(PagingReqDTO<StudentInfoReqDTO> reqDTO);

    /**
     * 根据id查询学员信息
     * @param baseIdReqDTO
     * @return
     */
    StudentInfoRespDTO getDetail(BaseIdReqDTO baseIdReqDTO);

    /**
     * excel导入学员信息
     * @param list
     */
    void importExce(String id, List<StudentExportDTO> list);

    /**
     * 获取学员基本信息数据
     * @param trainingClassInfoId
     * @return
     */
    StudentInfoExportDTO getStudentPdfData(String trainingClassInfoId);

    /**
     * 获取学员考核情况数据
     * @param trainingClassInfoId
     * @return
     */
    List<StudentAssessmentExportDTO> getStudentExamPdfData(String trainingClassInfoId);
}
